package com.takeaway.dao.daointerface;

import com.takeaway.pojo.Coupon;

import java.util.ArrayList;

/**
 * @author 后台赖骏
 *
 */
public interface CouponDao {
    /**
     * 用途：将对象参数传入进去，进行数据库的增加
     * @param coupon 这个是指定的泛型进行传参
     * @throws Exception 如果其中发生了异常，则可以在service中进行回滚
     * @return 返回的类型代表操作成功数
     *
     */
    int insert(Coupon coupon)throws Exception;

    /**用途：将class对象类参数和要删除的id传入进去，进行数据库的删除
     * @param clz 将对应的class对象传输进去，可以对其进行删除操作
     *  @param factor 这个是具体要查询
     *@param checkField 这个是具体要查询的条件
     * @throws Exception 如果其中发生了异常，则可以在service中进行回滚
     * @return 返回的类型代表操作成功数
     */
    int delete(Class<Coupon> clz,String[] checkField,Object... factor)throws Exception;
    /**
     * 用途：将对象参数传入进去，进行数据库的增加
     * @param coupon 这个是指定的泛型进行传参
     * @throws Exception 如果其中发生了异常，则可以在service中进行回滚
     * @return 返回的类型代表操作成功数
     *
     */
    int update(Coupon coupon)throws Exception;


    /**
     * 将三个参数传入进去进行数据库查询
     * @param coupon 这个是指定的泛型进行传参
     * @param factor 这个是具体要查询
     *@param checkFields 这个是具体要查询的条件
     * @throws Exception 如果其中发生了异常，则可以在service中进行回滚
     * @return 返回的所输入的对象
     */
    Coupon selectSingle(Coupon coupon,String[] checkFields,Object... factor)throws Exception;


    /** 直接查询以下表的所有字段
     * @param clz 将对应的class对象传输进去，可以对其进行查询操作
     * @param begin 查询的开始显示的条数
     * @param listNum 要显示多少条
     * @return 返回的所输入的对象集合
     * @throws Exception 如果其中发生了异常，则可以在service中进行回滚
     */
    ArrayList<Coupon> selectMore(Class<Coupon> clz, int begin, int listNum)throws Exception;

    /**通过设下的单个条件进行查询查询以下表的所有字段
     * @param clz 将对应的class对象传输进去，可以对其进行查询操作
     * @param checkField 这个输入查询所需要的字段
     * @param factor 这个是输入查询条件数据
     * @throws Exception 如果其中发生了异常，则可以在service中进行回滚
     * @return 返回的所输入的对象集合
     */
    ArrayList<Coupon> selectMore(Class<Coupon> clz, String[] checkField, Object... factor)throws Exception;
}
